import { ref } from 'vue'
export default function() {
	const popup = ref(null)
	const popupChange = (e) => {
		popup.value.open('bottom')
	}
	const popupClose = () => {
		popup.value.close()
	}
	let goBack = () => {
		uni.navigateBack({
			delta: 1
		})
	}
	const FormatCurrency = (number) => { //单位为元的
		var num = parseFloat(number);
		if (!isNaN(num)) {
			num = num.toFixed(2); // 四舍五入到两位小数  
			num = num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); // 添加千位分隔符  
			return num;
		} else {
			return '0.00'
		}
	}
	const FormatCurrencyFen = (number) => {
		//单位为分的 FormatCurrencyFen: function(number) { //单位为分的FormatCurrencyFen: function(number) { //单位为分的
		var num = parseFloat(number);
		if (!isNaN(num)) {
			num = num * 0.01;
			num = num.toFixed(2); // 四舍五入到两位小数  
			num = num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); // 添加千位分隔符  
			return num;
		} else {
			return '0.00'
		}
	}
	//加法函数，用来得到精确的加法结果
	//说明：javascript的加法结果会有误差，在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
	//调用：$h.Add(arg1,arg2)
	//返回值：arg1加上arg2的精确结果
	const Add = (arg1, arg2) => {
		arg2 = parseFloat(arg2);
		var r1, r2, m;
		try {
			r1 = arg1.toString().split(".")[1].length
		} catch (e) {
			r1 = 0
		}
		try {
			r2 = arg2.toString().split(".")[1].length
		} catch (e) {
			r2 = 0
		}
		m = Math.pow(100, Math.max(r1, r2));
		return (Mul(arg1, m) + Mul(arg2, m)) / m;
	}
	//减法函数，用来得到精确的减法结果
	//说明：javascript的加法结果会有误差，在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。
	//调用：$h.Sub(arg1,arg2)
	//返回值：arg1减去arg2的精确结果
	const Sub = (arg1, arg2) => {
		arg1 = parseFloat(arg1);
		arg2 = parseFloat(arg2);
		var r1, r2, m, n;
		try {
			r1 = arg1.toString().split(".")[1].length
		} catch (e) {
			r1 = 0
		}
		try {
			r2 = arg2.toString().split(".")[1].length
		} catch (e) {
			r2 = 0
		}
		m = Math.pow(10, Math.max(r1, r2));
		//动态控制精度长度
		n = (r1 >= r2) ? r1 : r2;
		return ((Mul(arg1, m) - Mul(arg2, m)) / m).toFixed(n);
	}
	//乘法函数，用来得到精确的乘法结果
	//说明：javascript的乘法结果会有误差，在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
	//调用：$h.Mul(arg1,arg2)
	//返回值：arg1乘以arg2的精确结果
	const Mul = (arg1, arg2) => {
		arg1 = parseFloat(arg1);
		arg2 = parseFloat(arg2);
		var m = 0,
			s1 = arg1.toString(),
			s2 = arg2.toString();
		try {
			m += s1.split(".")[1].length
		} catch (e) {}
		try {
			m += s2.split(".")[1].length
		} catch (e) {}
		return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
	}
	const copyText = (data, title) => {
		if (!data) {
			return
		}
		//#ifndef H5
		uni.setClipboardData({
			data: data,
			success: function() {
				uni.showToast({
					title: title || 'success!'
				})
			}
		});
		//#endif
		//#ifdef H5
		if (!document.queryCommandSupported('copy')) {
			//为了兼容有些浏览器 queryCommandSupported 的判断
			// 不支持
			return false;
		}
		let textarea = document.createElement('textarea');
		textarea.value = data;
		textarea.readOnly = 'readOnly';
		document.body.appendChild(textarea);
		textarea.select(); // 选择对象
		textarea.setSelectionRange(0, data.length); //核心
		let result = document.execCommand('copy'); // 执行浏览器复制命令
		textarea.remove();
		uni.showToast({
			title: title || 'success!'
		})
		//#endif
	}
	return {
		popupChange,
		popupClose,
		goBack,
		FormatCurrencyFen,
		FormatCurrency,
		Add,
		Sub,
		Mul,
		copyText
	}
}